שלום חברים יקרים אשמח אם מישהו יכול להוביל לקצה חוט או לפתרון בקוד שאני מנסה ליישם באתר לקוח

אז ככה זהו קובץ index.php בתיקיית ROOT של WORDPRESS שבו ישנם רידיירקטים שאמורים לזהות מובייל ולהפנות אוטומטית לקישור אחר
הקוד ניראה ככה והוא משתמש בפלאגין שמזהה מובייל
הכל עובד חוץ מבעייה אחת,

שברגע שחוזרים לאתר הרגיל מהמובייל. ומספיק שלוחצים על קישור הוא שוב מחזיר למובייל. מבלי אפשרות לגלוש בתוך האתר הרגיל.

האתר ניקרא דשא עוז
http://www.desheoz.co.il/


<?php
function mobile_Detection()
{
    include_once 'mobile/mobiledetect/Mobile_Detect.php';
    $detect = new Mobile_Detect();
 
    // Any mobile device (phones or tablets).
    if ($detect->isMobile()):
 
    // Mobile detected Start mobile wordpress
        $mobileOn = ($_GET['status']);
   
    // if status off session will be destroyed
        if ($mobileOn != off):
            session_start();
            $_SESSION['mobile'] = 'on';
            header("location:http://" . $_SERVER['HTTP_HOST'] . "/mobile" . $_SERVER['REQUEST_URI']);
            exit;
        else:
            session_start();
            // kill session
            unset($_SESSION['mobile']);
            define('WP_USE_THEMES', true);
            /** Loads the WordPress Environment and Template */
            require(dirname(__FILE__) . '/wp-blog-header.php');
        endif;
    else:
        // Mobile not detected Start normal wordpress
        define('WP_USE_THEMES', true);
        /** Loads the WordPress Environment and Template */
        require(dirname(__FILE__) . '/wp-blog-header.php');
    endif;
}

mobile_Detection();

6 תשובות

avatar ענה intval ב 15 ליולי 2015 #

אולי הבעיה לא בקוד אלא בציפיות.
אם אתה נכנס לאתר דרך מכשיר טלפון - אתר עובר לכתובת אחרת
אם אתה אחרי זה שוב נכנס לאתר הרגיל ממכשיר הטלפון (מה שאתה קורא לו "שברגע שחוזרים לאתר הרגיל מהמובייל") - מה אתה מצפה שיקרה? כנראה שהוא שוב אמור להחזיר אותך לכתובת האחרת.

כי מבחינת המחשב אין הבדל בין נכנסים לאתר לאתר הרגיל לבין חוזרים לאתר הרגיל.

איך תרצה לפתור את המצב הזה?
אולי צריך כפתור בגרסת המובייל שאומר לחזור לאתר הרגיל (שבלחיצה על הכפתור הזה תגיד לאתר הרגיל לא לעשות יותר הפניות) ואז גם להוסיף באתר הרגיל כפתור "לגרסת מובייל" שתחזיר את המצב ל_הפניות פעילות ?

avatar ענה staffguy ב 15 ליולי 2015 #

אז זהו שכפתור כזה ישנו באתר המובייל אך משהו בחשיבה אצלי לא נכון אולי תכנס לאתר ותראה את זה במו ענייך ותבין על מה אני מדבר?

avatar ענה intval ב 15 ליולי 2015 #

זה כל תוכן קובץ ה-index.php שלך?
אולי יש טעם לנקות את הקוד קצת? להוריד כפל קוד, את הפונקציה המיותרת ועוד כל מני דברים?

avatar ענה intval ב 15 ליולי 2015 #

אולי משהו כזה יספיק?

<?php
session_start();

include_once 'mobile/mobiledetect/Mobile_Detect.php';
$detect = new Mobile_Detect();
 
// Any mobile device (phones or tablets).
if ($detect->isMobile())
{
  // Mobile detected Start mobile wordpress
  $shouldKeepDesktopVersion = isset($_GET['desktop']);
 
  // if status off session will be destroyed
  if (!$shouldKeepDesktopVersion):
    $_SESSION['mobile'] = 'on';
    header("location:http://" . $_SERVER['HTTP_HOST'] . "/mobile" . $_SERVER['REQUEST_URI']);
    exit;
  else:
    unset($_SESSION['mobile']);
  endif;
}
   
// Mobile not detected Start normal wordpress
define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */
require(dirname(__FILE__) . '/wp-blog-header.php');


וכל מה שצריך לעשות הוא כפתור "חזור לגרסה המלאה" שיש לו בכתובת
?desktop=true

avatar ענה staffguy ב 15 ליולי 2015 #

זה מעולה החלפתי את הקוד בשלך הפונקציונליות אותו דבר. עובד כמו קודם רק כאשר עוברים לאתר מלא ובתוכו עוברים לדפים אחרים הוא שוב מחזיר לסלולר מאחר והGET נעלם. תציץ שוב בבקשה ואם אתה יכול ליצור איתי קשר בפרטי עוד יותר טוב. תודה

avatar ענה intval ב 16 ליולי 2015 #

צודק, בו ננסה ככה:

<?php
session_start();

// We went back from mobile to normal,
// therefore keep in mind all further requests should be normal
if(isset($_GET['desktop']))
{
  $_SESSION['showDesktopVersion'] == true;
}

$shouldStayOnDesktop = isset($_SESSION['showDesktopVersion']) && $_SESSION['showDesktopVersion'] === true;
 
if(!$shouldStayOnDesktop)
{
  include_once 'mobile/mobiledetect/Mobile_Detect.php';
  $detect = new Mobile_Detect();
 
  // Any mobile device (phones or tablets).
  if ($detect->isMobile())
  {
    // Mobile device. Send them to mobile version
    $_SESSION['showDesktopVersion'] = false;
    header("location:http://" . $_SERVER['HTTP_HOST'] . "/mobile" . $_SERVER['REQUEST_URI']);
    exit;
  }
  else
  {
    // This is no mobile device,
    // therefore we can always redirect to desktop version
    // without checking again on every request
    $_SESSION['showDesktopVersion'] = true;
  }
}
 

   
// Mobile not detected Start normal wordpress
define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */
require(dirname(__FILE__) . '/wp-blog-header.php');